<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>
<body>
    <script type="module">
        /*
            promise错误穿透：
                (1). 当使用promise的链式调用的时候，可以在最后用catch指定一个失败的回调
                (2). 前面任何操作出了错误，都会传到最后失败的回调中处理了
            备注: 如果不存在then的链式调用，就不需要考虑then的错误穿透
        */

        import {sendAjax} from '../00-测试用例服务器/sendAjax.js'

        // 这里我们故意把地址写错,你会发现即使你没有给then写失败的回调，而且第一个then就出错的情况下，我们好像直接就跳到catch那里了。实现的原理其实很简单，我们虽然没有写then的失败回调，但是底层会在运行的时候帮我们在那里补上一句 reason => {throw reason},把错误抛出去。其实就是帮我们写了失败的回调，所以当整个promise链中某一个出错的时候，就会顺着这个链子一直调用失败的回调，一直throw，直到找到最后的catch
        sendAjax('http://localhost:9090s')
        .then(
            (res)=>console.log(res)
        )
        .then(
            (res)=>console.log(res)
        )
        .catch(
            (err)=>console.log('出错了',err)
        )
    </script>
</body>
</html>